import { useRouter } from "next/router"; import { GetServerSideProps } from "next"; import "../../app/globals.css"; import TitleBar from "../../components/TitleBar/TitleBar"; import { ChannelCard } from "@/components/channel-card"; import DataChart from "@/components/DataChart/DataChart"; interface ChannelDataProp { channel_name: string; profile_pic: string; subscribers: number; sub_org: string; video_count: number; next_milestone: string; days_until_next_milestone: string; next_milestone_date: string; } interface GraphDataProp{ labels: string[]; datasets: number[]; } export const getServerSideProps: GetServerSideProps = async (context) => { const { slug } = context.params || {}; const chartData = await getGraphData(slug as string); const channelData = await getChannelData(slug as string); return { props: { chartData, channelData, slug }, }; }; function Page({ chartData, channelData, slug }: { chartData: GraphDataProp, channelData: ChannelDataProp, slug: string }) { return ( <>
); } async function getGraphData(slug: string){ const encodedSlug = encodeURIComponent(slug as string); const apiUrl = process.env.NEXT_PUBLIC_API_URL const response = await fetch(apiUrl+`/api/subscribers/${encodedSlug}`, { headers: { 'Cache-Control': 'no-cache' }, cache: 'no-cache' }); if(!response.ok){ console.log(response.statusText); } return response.json(); } async function getChannelData(slug: string){ const encodedSlug = encodeURIComponent(slug as string); const apiUrl = process.env.NEXT_PUBLIC_API_URL const response = await fetch(apiUrl+`/api/channel/${encodedSlug}`, { headers: { 'Cache-Control': 'no-cache' }, cache: 'no-cache' }); if(!response.ok){ console.log(response.statusText); } return response.json(); } export default Page;